package com.commerce.product.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.commerce.common.entity.ProductReview;
import com.commerce.common.utils.PageResult;

import java.util.Map;

/**
 * 商品评价服务接口
 */
public interface ReviewService extends IService<ProductReview> {

    /**
     * 获取商品评价列表
     * 
     * @param productId 商品ID
     * @param page 页码
     * @param size 每页大小
     * @param rating 评分筛选
     * @param withImages 是否有图片
     * @return 评价分页结果
     */
    PageResult<ProductReview> getProductReviews(Long productId, int page, int size, Integer rating, Boolean withImages);

    /**
     * 获取商品评价统计
     * 
     * @param productId 商品ID
     * @return 评价统计信息
     */
    Map<String, Object> getProductReviewStats(Long productId);

    /**
     * 添加商品评价
     * 
     * @param review 评价信息
     * @return 是否成功
     */
    boolean addReview(ProductReview review);

    /**
     * 获取用户评价列表
     * 
     * @param userId 用户ID
     * @param page 页码
     * @param size 每页大小
     * @return 评价分页结果
     */
    PageResult<ProductReview> getUserReviews(Long userId, int page, int size);

    /**
     * 商家回复评价
     * 
     * @param id 评价ID
     * @param replyContent 回复内容
     * @return 是否成功
     */
    boolean replyReview(Long id, String replyContent);

    /**
     * 检查用户是否可以评价该商品
     * 
     * @param userId 用户ID
     * @param productId 商品ID
     * @param orderId 订单ID
     * @return 是否可以评价
     */
    boolean checkCanReview(Long userId, Long productId, Long orderId);
}
